#include<cstdio>
#include<cstring>
#define MAXN 1000010
#define MOD 1000000007
using namespace std;
typedef long long ll;
char s[MAXN];
ll next[MAXN],cnt[MAXN],ans;
int n;
void KMP()
{
    int i,j=0;
    cnt[1]=1;
    for( i=2;s[i];i++)
    {
        while(j&&s[j+1]!=s[i])  j=next[j];
        if(s[j+1]==s[i])  ++j;
        next[i]=j;
        cnt[i]=cnt[j]+1;
    }
    ll m=strlen(s+1);
    for(int i=1;i<=m;i++){
        printf("%d ",cnt[i]);
    }printf("\n");
     j=0;ans=1;
    for(i=1;s[i];i++)
    {
        while(j&&s[j+1]!=s[i])  j=next[j];
        if(s[j+1]==s[i])  ++j;
        while((j<<1)>i)  j=next[j];
        ans*=cnt[j]+1;
        ans%=MOD;
        printf("%lld\n",ans);
    }
}
int main()
{
     scanf("%d",&n);
     for(int i=1;i<=n;i++)
     {
          scanf("%s",s+1);
          KMP();
          printf("%lld\n",ans);
    }
    return 0;
}
